package com.jxx.algorithm.datastructure;

/**
 * @author LitchiShell
 * @description: 队列操作
 * @create 2021-11-18
 */
public class MyQueue {

    private int[] array;

    private int front;

    private int rear;

    public MyQueue(int capacity) {
        this.array = new int[capacity];
    }

    /**
     * 入队
     * @param element 入队元素
     * @throws Exception
     */
    public void enQueue(int element) throws Exception {
        if ((rear+1)%array.length==front) {
            throw new Exception("队列已满");
        }
        array[rear] = element;
        rear = (rear+1)%array.length;
    }

    /**
     * 输出队列
     * @return
     * @throws Exception
     */
    public int deQueue() throws Exception {
        if (rear == front) {
            throw new Exception("队列已空！");
        }
        int deQueueElement = array[front];
        front = (front+1)%array.length;
        return deQueueElement;
    }

    /**
     * 输出队列
     */
    public void output(){
        for (int i = front; i!=rear; i = (i+1)%array.length) {
            System.out.println(array[i]);
        }
    }

    public static void main(String[] args) throws Exception {
        MyQueue myQueue = new MyQueue(6);
        myQueue.enQueue(3);
        myQueue.enQueue(2);
        myQueue.enQueue(1);
        myQueue.enQueue(4);
        myQueue.enQueue(5);
        myQueue.deQueue();
        myQueue.deQueue();
        myQueue.deQueue();
        myQueue.enQueue(12);
        myQueue.output();
    }

}
